#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compare_int(const void *, const void *);
int *keep_unique_array(int[], int, int *);
int find_position(int[], int, int);
int *copy_array(int[], int);

int main()
{
    int num;
    scanf("%d", &num);
    for (int t = 0; t < num; t++) {
        int array_size;
        scanf("%d", &array_size);

        int input[array_size];
        for (int i = 0; i < array_size; i++) 
            scanf(" %d", &input[i]);
        int* input_back = copy_array(input, array_size);
        int unique_input_len;
        int* unique_input = keep_unique_array(input, array_size, &unique_input_len);

        int groups[array_size];
        for (int i = 0; i < array_size; i++)
            scanf(" %d", &groups[i]);
        int unique_groups_len;
        int* groups_back = copy_array(groups, array_size);
        int* unique_groups = keep_unique_array(groups, array_size, &unique_groups_len);

        int matrix[unique_groups_len][unique_input_len];
        memset(matrix, 0, sizeof(matrix));
        for (int i = 0; i < array_size; i++) {
            int row = find_position(unique_groups, array_size, groups_back[i]);
            int col = find_position(unique_input, array_size, input_back[i]);
            matrix[row][col]++;
        }

        for (int i = 0; i < unique_groups_len; i++) {
            printf("%d={", unique_groups[i]);
            for (int j = 0; j < unique_input_len; j++) {
                if (j != unique_input_len - 1) 
                    printf("%d=%d,", unique_input[j], matrix[i][j]);
                else
                    printf("%d=%d", unique_input[j], matrix[i][j]);
            }
            printf("}\n");
        }
    }
}

int* copy_array(int array[], int array_size)
{
    int* new_array = (int *)malloc(array_size * sizeof(int));
    for (int i = 0; i < array_size; i++)
        new_array[i] = array[i];
    return new_array;
}

int find_position(int array[], int array_size, int element)
{
    for (int i = 0; i < array_size; i++)
        if (array[i] == element)
            return i;
    return -1;
}

int compare_int(const void *i, const void *j)
{
    const int *a = i;
    const int *b = j;
    if (*a == *b)
        return 0;
    else if (*a > *b)
        return 1;
    else 
        return -1;
}

int* keep_unique_array(int array[], int array_size, int * unique_len)
{
    qsort(array, array_size, sizeof(int), compare_int);
    
    *unique_len = 1;
    for (int i = 1; i < array_size; i++)
        if (array[i] != array[i - 1])
            (*unique_len)++;
    
    int *unique_array = (int *)malloc((*unique_len) * sizeof(int));
    unique_array[0] = array[0];
    int pos = 0;
    for (int i = 0; i < array_size; i++)
        if (array[i] != array[i - 1])
            unique_array[pos++] = array[i];

    return unique_array;
}